class Event {
  constructor() {
    this.list = {}
  }

  //添加订阅
  add(name, fn) {
    if (!this.list[name]) {
      this.list[name] = []
    }
    this.list[name].push(fn)
  }

  //触发 发布
  emit(name) {
    if (this.list[name]) {
      this.list[name].forEach(fn => {
        fn()
      })
    }
  }

  //取消订阅
  off(name, fn) {
    if (!this.list[name]) return
    const index = this.list[name].findIndex(itemFn => {
      return itemFn === fn
    })
    this.list[name].splice(index, 1)
  }
}

const event = new Event()
const a = () => {
  console.log('房源1--80平--200万')
}
event.add('name', a)
event.add('name', () => {
  console.log('房源3--200平--1000万')
})
event.add('name', () => {
  console.log('房源4--200平--1000万')
})
event.add('name2', () => {
  console.log('房源2--200平--1000万')
})
// event.off('name', a)

event.emit('name')

